// 初始化
// initMixin()

/**
 * 初始化状态
 * data 、 watch 、 computed
 * @param {*} vm 
 */

import proxyData from "./proxy"
import observe from './observe'

function initState(vm) {
  var options = vm.$options

  if (options.data) {
    initData(vm)
  }
}

function initData(vm) {
  // 保留原本，不修改用户数据
  var data = vm.$options.data

  vm._data = data = typeof data === 'function' ? data.call(vm) : data || {}

  // 直接由 vm.XXX 访问 ， 而不用 vm._data.XXX
  for (var key in data) {
    proxyData(vm, '_data', key)
  }

  // 【观察者模式】 拦截后进行额外处理
  observe(vm._data)

}

export {
  initState
}